package com.bzkj.system.mapper;

import com.bzkj.system.domain.SysOperOrderLog;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * 操作日志 数据层
 *
 * @author ruoyi
 */
public interface SysOperOrderLogMapper {
    /**
     * 新增操作日志
     *
     * @param operLog 操作日志对象
     * @return 结果
     */
    public int insertOperlog(SysOperOrderLog operLog);

    /**
     * 查询系统操作日志集合
     *
     * @param operLog 操作日志对象
     * @return 操作日志集合
     */
    public List<SysOperOrderLog> selectOperLogList(SysOperOrderLog operLog);

    /**
     * 批量删除系统操作日志
     *
     * @param operIds 需要删除的操作日志ID
     * @return 结果
     */
    public int deleteOperLogByIds(Long[] operIds);

    /**
     * 查询操作日志详细
     *
     * @param operId 操作ID
     * @return 操作日志对象
     */
    public SysOperOrderLog selectOperLogById(Long operId);

    /**
     * 清空操作日志
     */
    public void cleanOperLog();

    /**
     * 根据表名获取字段翻译
     *
     * @param tableName 表名
     * @return 查询结果
     */
    @Select("SELECT field_name, field_cn_name,is_translated FROM field_translation WHERE table_name = #{tableName} AND is_translated = 1")
    List<Map<String, String>> getFieldTranslations(@Param("tableName") String tableName);

    /**
     * 根据表名获取表头信息
     *
     * @param pkField   主键字段
     * @param tableName 表名
     * @param pkValue   主键值
     * @return 查询结果
     */
    @Select("SELECT * FROM ${tableName} WHERE ${pkField} = #{pkValue} AND bills_state != '9'")
    Map<String, Object> selectOrderHeaderByPk(@Param("pkField") String pkField, @Param("tableName") String tableName, @Param("pkValue") Object pkValue);

    /**
     * 根据表名获取表体信息
     *
     * @param pkField   关联字段
     * @param tableName 表名
     * @param pkValue   关联字段值
     * @return 查询结果
     */
    @Select("SELECT * FROM ${tableName} WHERE ${pkField} = #{pkValue}")
    List<Map<String, Object>> selectOrderDetailsByPk(@Param("pkField") String pkField, @Param("tableName") String tableName, @Param("pkValue") Object pkValue);

    /**
     * 根据父表ID获取子表信息
     *
     * @param operId 父级ID
     * @return 查询结果
     */
    List<SysOperOrderLog> setDetailDescByParentId(@Param("parentId") Long operId);
}
